package cn.dduan.fool.data.type.reference;

/**
 * 抽象类
 *
 * 优点：
 * 1、抽象类可以有⾮抽象的⽅法
 * 2、抽象类可以有其他变量
 *
 * 缺点：
 * 1、只能实现⼀个抽象类
 *
 * @author dduan
 * @version 1.0       
 * @date 2024/8/27
 */
abstract class MyAbstract {
    final String one = "抽象类中的final变量";
    static String two = "抽象类中的static变量";
    String three = "抽象类中的普通变量";

    /**
     * 抽象方法-需继承实现
     *
     * @param
     * @return void
     * @author dduan
     * @version 1.0
     * @date 2024/8/27
     */
    abstract void fun();

    void test(){
        System.out.println("抽象类中的具体实现方法：test()");
    }
}

class MyClass extends MyAbstract {

    @Override
    void fun() {
        System.out.println("实现抽象类中的抽象方法：fun()");
    }

    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        myClass.test();
        myClass.fun();

        System.out.println(myClass.one);
        System.out.println(MyClass.two);
        System.out.println(myClass.three);
    }
}
